package com.ninong.ker.common.oss.upload;

import java.io.File;
import java.io.InputStream;

import com.aliyun.oss.OSSClient;

import io.minio.MinioClient;

/**
 * 
 * @author 鸠摩智
 *
 */
public interface IOssUpload {

	/**
	 * 是否存在
	 * 
	 * @param ossClient  oss客户端
	 * @param bucketName bucketName
	 * @param yourKey    yourKey
	 * @return 是否存在 @ 自定义异常
	 */
	public boolean doesObjectExits(OSSClient ossClient, String bucketName, String yourKey);

	/**
	 * 上传字符串
	 * 
	 * @param ossClient  oss客户端
	 * @param bucketName bucketName
	 * @param yourKey    yourKey
	 * @param prefix     分隔符
	 * @param content    数据
	 * @return 访问地址 @ 自定义异常
	 */
	public String uploadString(OSSClient ossClient, String bucketName, String yourKey, String prefix, String content);

	/**
	 * 上传byte数组
	 * 
	 * @param ossClient  oss客户端
	 * @param bucketName bucketName
	 * @param yourKey    yourKey
	 * @param prefix     分隔符
	 * @param bytes      二进制数据
	 * @return 访问地址 @ 自定义异常
	 */
	public String uploadByte(OSSClient ossClient, String bucketName, String yourKey, String prefix, byte[] bytes);

	/**
	 * 上传文件流
	 * 
	 * @param ossClient   oss客户端
	 * @param bucketName  bucketName
	 * @param yourKey     yourKey
	 * @param prefix      分隔符
	 * @param inputStream 文件流
	 * @return 访问地址 @ 自定义异常
	 */
	public String uploadInputStream(OSSClient ossClient, String bucketName, String yourKey, String prefix,
			InputStream inputStream);

	/**
	 * 上传文件流
	 * @param client
	 * @param bucketName
	 * @param objectName
	 * @param inputStream
	 * @return
	 */
	public String uploadInputStream(MinioClient client, String bucketName, String objectName,InputStream inputStream);

	/**
	 * 上传文件流
	 * @param client
	 * @param bucketName
	 * @param objectName
	 * @param inputStream
	 * @param contentType
	 * @return
	 */
	public String uploadInputStream(MinioClient client, String bucketName, String objectName,InputStream inputStream,String contentType);

	/**
	 * 上传本地文件
	 * 
	 * @param ossClient  oss客户端
	 * @param bucketName bucketName
	 * @param yourKey    yourKey
	 * @param prefix     分隔符
	 * @param file       文件
	 * @return 访问地址 @ 自定义异常
	 */
	public String uploadFile(OSSClient ossClient, String bucketName, String yourKey, String prefix, File file);
}
